package add_$14_LinesSynchronized;

/*

运行结果：
全是同一线程的输出
对运行结果的分析：因为当某一个线程执行同步代码块时，其它线程将无法执行当前同步代码块，会发生阻塞，等当前线程执行
完同步代码块，其它的线程才能开始执行该同步代码块。一个线程访问的同步代码块还没执行完，其它线程就无法访问。故同一
线程卖出了所有的票

 */

public class SynchronizedCodeBlock1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Line line = new Line();    // 创建Line类对象
        
        // 创建2个线程
        Thread t1 = new Thread(line, "线程一") {
            
            public void run() {
                
                line.run();
            }
            
        };
        
        Thread t2 = new Thread(line, "线程二") {
            
            public void run() {
            
                line.run();
                
            }
            
            
        };
        
        //开启线程
        t1.start();
        t2.start();
    }

}

class Line extends Thread {
    
    public void run() {
        
        synchronized(Line.class) {
        
        System.out.println(Thread.currentThread().getName() + "执行了...");
        
        //休眠
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        }
    }
    
}

